/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.tramite.be;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.faces.model.SelectItem;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.cip.esymons.general.be.Solicitante;

/**
 *
 * @author FreddyHIQ
 */
@Entity
@Table(name = "tra_transaccion")
@NamedQueries({@NamedQuery(name = "Transaccion.findAll", query = "SELECT t FROM Transaccion t"), @NamedQuery(name = "Transaccion.findByTraCodigo", query = "SELECT t FROM Transaccion t WHERE t.traCodigo = :traCodigo"), @NamedQuery(name = "Transaccion.findByTraFecha", query = "SELECT t FROM Transaccion t WHERE t.traFecha = :traFecha"), @NamedQuery(name = "Transaccion.findByTraEstado", query = "SELECT t FROM Transaccion t WHERE t.traEstado = :traEstado"), @NamedQuery(name = "Transaccion.findByTraRecepcion", query = "SELECT t FROM Transaccion t WHERE t.traRecepcion = :traRecepcion")})
public class Transaccion implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "tra_codigo")
    private Long traCodigo;
    @Basic(optional = false)
    @Column(name = "tra_fecha")
    @Temporal(TemporalType.DATE)
    private Date traFecha;
    @Basic(optional = false)
    @Column(name = "tra_estado")
    private boolean traEstado;
    @Basic(optional = false)
    @Column(name = "tra_recepcion")
    private short traRecepcion;
    @Transient
    private Operacion operacionActiva;
    @Transient
    private String estado;
    @Transient
    private Long ope;
    @Transient
    private SelectItem[] operacionesActivas;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "transaccion", fetch = FetchType.LAZY)
    private DirRecep dirRecep;
    @JoinColumn(name = "fk_exp_codigo", referencedColumnName = "exp_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Expediente fkExpCodigo;
    @JoinColumn(name = "fk_sol_codigo", referencedColumnName = "sol_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Solicitante fkSolCodigo;
    @JoinColumn(name = "fk_trm_codigo", referencedColumnName = "trm_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Tramite fkTrmCodigo;
    @JoinColumn(name = "fk_solicitado", referencedColumnName = "sol_codigo")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Solicitante fkSolicitado;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "fkTraCodigo", fetch = FetchType.LAZY)
    private List<Operacion> operacionCollection;

    public Transaccion() {
        
    }

    public Transaccion(Long traCodigo) {
        this.traCodigo = traCodigo;
    }

    public Transaccion(Long traCodigo, Date traFecha, boolean traEstado, short traRecepcion) {
        this.traCodigo = traCodigo;
        this.traFecha = traFecha;
        this.traEstado = traEstado;
        this.traRecepcion = traRecepcion;
    }

    public Long getTraCodigo() {
        return traCodigo;
    }

    public void setTraCodigo(Long traCodigo) {
        this.traCodigo = traCodigo;
    }

    public Date getTraFecha() {
        return traFecha;
    }

    public void setTraFecha(Date traFecha) {
        this.traFecha = traFecha;
    }

    public boolean getTraEstado() {
        return traEstado;
    }

    public void setTraEstado(boolean traEstado) {
        this.traEstado = traEstado;
    }

    public short getTraRecepcion() {
        return traRecepcion;
    }

    public void setTraRecepcion(short traRecepcion) {
        this.traRecepcion = traRecepcion;
    }

    public DirRecep getDirRecep() {
        return dirRecep;
    }

    public void setDirRecep(DirRecep dirRecep) {
        this.dirRecep = dirRecep;
    }

    public Expediente getFkExpCodigo() {
        return fkExpCodigo;
    }

    public void setFkExpCodigo(Expediente fkExpCodigo) {
        this.fkExpCodigo = fkExpCodigo;
    }

    public Solicitante getFkSolCodigo() {
        return fkSolCodigo;
    }

    public void setFkSolCodigo(Solicitante fkSolCodigo) {
        this.fkSolCodigo = fkSolCodigo;
    }

    public Tramite getFkTrmCodigo() {
        return fkTrmCodigo;
    }

    public void setFkTrmCodigo(Tramite fkTrmCodigo) {
        this.fkTrmCodigo = fkTrmCodigo;
    }

    public Solicitante getFkSolicitado() {
        return fkSolicitado;
    }

    public void setFkSolicitado(Solicitante fkSolicitado) {
        this.fkSolicitado = fkSolicitado;
    }

    public List<Operacion> getOperacionCollection() {
        return operacionCollection;
    }

    public void setOperacionCollection(List<Operacion> operacionCollection) {
        this.operacionCollection = operacionCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (traCodigo != null ? traCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Transaccion)) {
            return false;
        }
        Transaccion other = (Transaccion) object;
        if ((this.traCodigo == null && other.traCodigo != null) || (this.traCodigo != null && !this.traCodigo.equals(other.traCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.tramite.be.Transaccion[traCodigo=" + traCodigo + "]";
    }

    public Operacion getOperacionActiva() {
        return operacionActiva;
    }

    public void setOperacionActiva(Operacion operacionActiva) {
        this.operacionActiva = operacionActiva;
    }

    public SelectItem[] getOperacionesActivas() {
        return operacionesActivas;
    }

    public void setOperacionesActivas(SelectItem[] operacionesActivas) {
        this.operacionesActivas = operacionesActivas;
    }

    /**
     * @return the estado
     */
    public String getEstado() {
        return estado;
    }

    /**
     * @param estado the estado to set
     */
    public void setEstado(String estado) {
        this.estado = estado;
    }

    /**
     * @return the ope
     */
    public Long getOpe() {
        return ope;
    }

    /**
     * @param ope the ope to set
     */
    public void setOpe(Long ope) {
        this.ope = ope;
    }

}
